{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# {class}`~tvm.relay.frontend.common.AttrCvt`\n",
    "\n",
    "{class}`~tvm.relay.frontend.common.AttrCvt` 的类，它是通用的属性转换器。该类用于将给定的属性字典进行转换，并返回新的属性字典。\n",
    "\n",
    "该类的构造函数接受以下参数：\n",
    "- `op_name`：算子名称，可以是字符串或可调用对象。如果是字符串，则返回的算子名称为该字符串；如果是可调用对象，则通过调用 `op_name(attr)` 来获取算子名称。\n",
    "- `transforms`：一个字典，包含要进行转换的属性名和对应的新属性名、默认值以及转换函数。如果只提供了新属性名，则相当于重命名属性名；如果提供了默认值，则该属性被视为可选；如果提供了转换函数，则使用该函数处理原始属性值。\n",
    "- `excludes`：一个列表，包含不应出现的被排除属性。如果出现了这些属性，则会引发 `NotImplementedError` 异常。\n",
    "- `disables`：一个列表，包含在 `relay` 中禁用的属性。会记录警告日志。\n",
    "- `ignores`：一个列表，包含在 `relay` 中忽略的属性。会记录调试级别的日志。\n",
    "- `extras`：一个字典，包含一系列要添加到返回的属性字典中的额外属性。\n",
    "- `custom_check`：一个可调用对象，接受属性作为参数，并返回 `True/False`。如果返回的不是 `True`，则会引发 `RuntimeError` 异常。\n",
    "\n",
    "该类还定义了一些辅助方法，如 `__call__` 方法用于执行属性转换，`_parse_default` 方法用于解析默认值，`_parse_bool` 方法用于解析布尔值，以及 `_required_attr` 方法用于获取必需的属性。\n",
    "\n",
    "使用示例：\n",
    "\n",
    "```python\n",
    "attr_converter = AttrConverter(op_name, transforms={'a':'b', 'c':('d', 1)})\n",
    "new_op_name, new_attr = attr_converter(attrs)\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
